fn jankincai_1() -> Option<u8> {
    Some(1)
}

fn jankincai_2() -> Option<u8> {
    Some(2)
}


fn jankincai_3() -> Option<u8> {
    Some(3)
}


fn jankincai() -> Option<u8> {
    // 这只是一个项目里面抽出来的简单例子，实际对于刚入门Rust程序员，可能会忽视(?)符号的作用。

    // 正解
    // Some(jankincai_1()? + jankincai_2()? + jankincai_3()?)

    // 明明可以写的很简洁
    let v1 = match jankincai_1() {
        Some(v) => v,
        None => return None,
    };

    let v2 = match jankincai_2() {
        Some(v) => v,
        None => return None,
    };

    let v3 = match jankincai_3() {
        Some(v) => v,
        None => return None,
    };

    Some(v1 + v2 + v3)
}


fn main() {
    println!("{:?}", jankincai());
}
